package OfferOneHundred;

import java.util.ArrayList;
import java.util.List;

/**
 * @version: 1.0
 * @Author: wuqiu
 * @date: 2023-06-30 14:53
 * @description: LeetcodeLearnAlgorithm -> OfferOneHundred
 */
public class Q6从尾到头打印链表 {
    List<Integer> list = new ArrayList<>();

    public class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
        }
    }

    /**
     * 不用管链表是怎么实现的
     * 不用管链表的next是怎么填入链表的
     * @param head
     * @return
     */
    public int[] reversePrint(ListNode head) {
        recur(head);
        int[] res = new int[list.size()];
        for (int i = 0; i < res.length; i++) {
            res[i] = list.get(i);
        }
        return res;
    }

    /**
     * 递归到最后一层
     * 从最后一层开始装val，装进list
     * @param head
     */
    public void recur(ListNode head) {
        if (head == null) {
            return;
        }
        recur(head.next);
        list.add(head.val);//装入的语句的位置有讲究；符合题意得话，必须放在递归语句的后面
    }
}
